/*
 *
 *    Copyright (c) 2022 Project CHIP Authors
 *
 *    Licensed under the Apache License, Version 2.0 (the "License");
 *    you may not use this file except in compliance with the License.
 *    You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS,
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *    See the License for the specific language governing permissions and
 *    limitations under the License.
 */

// THIS FILE IS GENERATED BY ZAP
// This file is generated from clusters-Enums.h.zapt

#pragma once

#include <clusters/shared/Enums.h>
#include <cstdint>

namespace chip
{
namespace app
{
	namespace Clusters
	{
		namespace WindowCovering
		{

			// Enum for EndProductType
			enum class EndProductType : uint8_t {
				kRollerShade = 0x00,
				kRomanShade = 0x01,
				kBalloonShade = 0x02,
				kWovenWood = 0x03,
				kPleatedShade = 0x04,
				kCellularShade = 0x05,
				kLayeredShade = 0x06,
				kLayeredShade2D = 0x07,
				kSheerShade = 0x08,
				kTiltOnlyInteriorBlind = 0x09,
				kInteriorBlind = 0x0A,
				kVerticalBlindStripCurtain = 0x0B,
				kInteriorVenetianBlind = 0x0C,
				kExteriorVenetianBlind = 0x0D,
				kLateralLeftCurtain = 0x0E,
				kLateralRightCurtain = 0x0F,
				kCentralCurtain = 0x10,
				kRollerShutter = 0x11,
				kExteriorVerticalScreen = 0x12,
				kAwningTerracePatio = 0x13,
				kAwningVerticalScreen = 0x14,
				kTiltOnlyPergola = 0x15,
				kSwingingShutter = 0x16,
				kSlidingShutter = 0x17,
				kUnknown = 0xFF,
				// All received enum values that are not listed above will be mapped
				// to kUnknownEnumValue. This is a helper enum value that should only
				// be used by code to process how it handles receiving and unknown
				// enum value. This specific should never be transmitted.
				kUnknownEnumValue = 24,
			};

			// Enum for Type
			enum class Type : uint8_t {
				kRollerShade = 0x00,
				kRollerShade2Motor = 0x01,
				kRollerShadeExterior = 0x02,
				kRollerShadeExterior2Motor = 0x03,
				kDrapery = 0x04,
				kAwning = 0x05,
				kShutter = 0x06,
				kTiltBlindTiltOnly = 0x07,
				kTiltBlindLiftAndTilt = 0x08,
				kProjectorScreen = 0x09,
				kUnknown = 0xFF,
				// All received enum values that are not listed above will be mapped
				// to kUnknownEnumValue. This is a helper enum value that should only
				// be used by code to process how it handles receiving and unknown
				// enum value. This specific should never be transmitted.
				kUnknownEnumValue = 10,
			};

			// Bitmap for ConfigStatus
			enum class ConfigStatus : uint8_t {
				kOperational = 0x1,
				kOnlineReserved = 0x2,
				kLiftMovementReversed = 0x4,
				kLiftPositionAware = 0x8,
				kTiltPositionAware = 0x10,
				kLiftEncoderControlled = 0x20,
				kTiltEncoderControlled = 0x40,
			};

			// Bitmap for Feature
			enum class Feature : uint32_t {
				kLift = 0x1,
				kTilt = 0x2,
				kPositionAwareLift = 0x4,
				kAbsolutePosition = 0x8,
				kPositionAwareTilt = 0x10,
			};

			// Bitmap for Mode
			enum class Mode : uint8_t {
				kMotorDirectionReversed = 0x1,
				kCalibrationMode = 0x2,
				kMaintenanceMode = 0x4,
				kLedFeedback = 0x8,
			};

			// Bitmap for OperationalStatus
			enum class OperationalStatus : uint8_t {
				kGlobal = 0x3,
				kLift = 0xC,
				kTilt = 0x30,
			};

			// Bitmap for SafetyStatus
			enum class SafetyStatus : uint16_t {
				kRemoteLockout = 0x1,
				kTamperDetection = 0x2,
				kFailedCommunication = 0x4,
				kPositionFailure = 0x8,
				kThermalProtection = 0x10,
				kObstacleDetected = 0x20,
				kPower = 0x40,
				kStopInput = 0x80,
				kMotorJammed = 0x100,
				kHardwareFailure = 0x200,
				kManualOperation = 0x400,
				kProtection = 0x800,
			};
		} // namespace WindowCovering
	} // namespace Clusters
} // namespace app
} // namespace chip
